<?php
// 包含函数文件
require_once 'functions.php';
require_once 'config.php';

// 调试函数：测试文件存储
function debug_file_storage() {
    $debug_info = array();
    // 检查存储目录是否存在
    $storageDir = LETTERS_DIRECTORY;
    if (!is_dir($storageDir)) {
        $debug_info[] = '错误: 存储目录不存在';
        return $debug_info;
    }
    $debug_info[] = '存储目录存在';

    // 检查目录权限
    if (!is_writable($storageDir)) {
        $debug_info[] = '错误: 存储目录不可写';
    } else {
        $debug_info[] = '存储目录可写';
    }

    // 检查文件数量
    $files = glob($storageDir . '*.txt');
    $debug_info[] = '当前信件数量: ' . count($files);

    return $debug_info;
}

// 执行调试（仅在开发环境启用）
$debug_mode = false; // 设置为 false 可关闭调试
$debug_info = array();
if ($debug_mode) {
    $debug_info = debug_file_storage();
    // 将调试信息写入日志文件
    file_put_contents('debug.log', implode("\n", $debug_info) . "\n", FILE_APPEND);
}

// 检查请求方法是否为 POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405); // 方法不允许
    echo json_encode(array('success' => false, 'message' => '只允许 POST 请求', 'debug' => $debug_info));
    exit;
}

// 获取密码参数
$password = isset($_POST['password']) ? trim($_POST['password']) : '';

if (empty($password)) {
    echo json_encode(array('success' => false, 'message' => '密码不能为空'));
    exit;
}

// 密码长度检查
if (strlen($password) < 6) {
    echo json_encode(array('success' => false, 'message' => '密码长度不能少于6位'));
    exit;
}

// 将密码转换为数字
$number = password_to_number($password);

if ($number === false) {
    echo json_encode(array('success' => false, 'message' => '无效的密码格式'));
    exit;
}

// 根据数字获取信件内容
$letterContent = get_letter_by_number($number);

if ($letterContent === false) {
    echo json_encode(array('success' => false, 'message' => '未找到对应的信件'));
    exit;
}

// 返回成功响应
$response = array(
    'success' => true,
    'content' => $letterContent,
    'number' => $number
);

if ($debug_mode) {
    $response['debug'] = $debug_info;
}

echo json_encode($response);
?>